const express = require('express')
const app = express()
const cors = require('cors')
const helmet = require('helmet')
const morgan = require('morgan')
const path = require('path')

// 顶部加载环境变量
require('dotenv').config();
const config = require('./config/config');



// 中间件
app.use(cors())
app.use(helmet())
app.use(morgan('dev'))
app.use(express.json())
app.use(express.urlencoded({ extended: true }))



// 托管 Vue 静态资源
// app.use(express.static(path.join(__dirname, '../../frontend/dist')));
 


//引入路由
const Router_examine_scores = require('./routes/examine_scores');
const Router_users = require('./routes/users');
// const Router_view = require('./routes/view');

// 挂载登录API路由
app.use(Router_examine_scores);
app.use(Router_users);
// app.use(Router_view);



// 根路由   ---
app.get('/health', (req, res) => {
  res.json({ message: '服务器正常运行', timestamp: new Date().toISOString() });
});


// 前端首页
// 处理前端路由 - 所有非API请求都返回index.html
// app.get(/^(?!\/api).*$/, (req, res, next) => {
//   // 排除API请求
//   if (req.path.startsWith('/api/')) {
//     return next();
//   }
//   res.sendFile(path.join(__dirname, '../../frontend/dist/index.html'));
// });


// 全局错误处理中间件
app.use((err, req, res, next) => {
  console.error('全局错误:', err.stack);
  res.status(500).json({ 
    error: '服务器内部错误',
    message: process.env.NODE_ENV === 'development' ? err.message : '内部服务器错误'
  });
});

// 启动服务器 - 添加错误处理
const server = app.listen(config.PORT, () => {
  console.log(`===============曲靖市边界地图服务器已启动--监听端口${config.PORT}===============`);
}).on('error', (err) => {
  console.error('服务器启动失败:', err.message);
  if (err.code === 'EADDRINUSE') {
    console.error(`端口 ${config.PORT} 已被占用，请使用其他端口`);
  }
  process.exit(1);
});

// 优雅关闭
process.on('SIGINT', () => {
  console.log('正在关闭服务器...');
  server.close(() => {
    console.log('服务器已关闭');
    process.exit(0);
  });
});

module.exports = app;
// app.listen(config.PORT, () => {
//   console.log(`曲靖市边界地图服务器运行中------端口${config.PORT}`)
// })